package com.Drools.CIPS.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
 * activation-group "组" //同一组只会执行成功一个
 * agenda-group "001" //给规则分组 为了标识,只有指定此组，此组才会触发
 * auto-focus false //指定 agenda-group 的值需不需要特殊指明 true:不用指明，也执行     false:默认 需要指明
 * date-effective "2023-06-12" //当前日期不小于 当前日期才可执行 日期的格式 可以设置
 */
@Data
@AllArgsConstructor
@ToString
@NoArgsConstructor
public class Rulers {
    private String fileName;//文件名   重复会覆盖之前的文件名  // 必须唯一
    private String packageName;//包名
    private String importName;//所需,类名    同一个包可以共用
    private String globalName;//全局变量     同一个包可以共用
    private String ruleName;//规则名   不同的包，规则名可以不一样-相当于方法名
    private Boolean enabled = true;//false:表示不启用此规则   true:启用此规则
    private Boolean noLoop = false;//表示该规则，只会被引擎检查一次
    private Integer salience;//优先级  值越大，越优先
    private String agendaGroup;//给规则分组 为了标识,只有指定此组，此组才会触发
    private Boolean autoFocus = false;//指定 agendaGroup 的值需不需要特殊指明 true:不用指明，也执行     false:默认 需要指明
    private String dateEffective;//生效日期
    private String when;//条件
    private String then;//结果
    private String remark;//备注


    public String ruler(){
        StringBuilder ruler = new StringBuilder("package ");
        ruler.append(packageName).append(";\n");//包名
        if(importName!=null&&!importName.trim().equals("")){
            ruler.append("import ").append(importName).append(";\n");//类名
        }
        if(globalName!=null){
            ruler.append("global ").append(importName).append(";\n");//全局变量
        }
        ruler.append("rule \"").append(ruleName).append("\"\n");
        if(!enabled){//默认启用此规则 true  不用添加
            ruler.append("enabled ").append("false\n");
        }
        if(noLoop){
            ruler.append("no-loop true\n");//表示该规则，只会被引擎检查一次
        }
        if(dateEffective!=null&&!dateEffective.equals("")){//生效日期
            ruler.append("date-effective \"").append(dateEffective).append("\"\n");
        }
        if(salience!=null){
            ruler.append("salience ").append(salience).append("\n");
        }
        if(agendaGroup!=null&&!agendaGroup.trim().equals("")){//分组
            ruler.append("agenda-group \"").append(agendaGroup).append("\"\n");
        }
        if(autoFocus){//auto-focus false //指定 agenda-group 的值需不需要特殊指明 true:不用指明，也执行     false:默认 需要指明
            ruler.append("auto-focus ").append(true).append("\n");
        }
        ruler.append("when\n").append(when).append(";\n");
        ruler.append("then\n").append(then).append(";\n");

        ruler.append("end");
        return ruler.toString();
    }

}
